// pages/films/play.js
let app=getApp() 
let pp
Page({
    async play(e){
        let listIndex=e.target.dataset.index
        if(listIndex==null)return
        let sourceIndex=this.data.sourceIndex
        let change={playingIndex: sourceIndex}
        change[`source[${sourceIndex}].list[0].selected`]=true
        change[`source[${sourceIndex}].listIndex`]=listIndex
        this.setData(change)
        let source=this.data.sources[sourceIndex]
        let video=source.list[listIndex]
        if(video.url.endsWith('.m3u8')){ //已经是m3u8视频地址了
			this.setData({ url: video.url }) //直接设置为video要播放的视频src
			return
		}
        let url=`${pp.host}${video.url}`
        console.log(url);
        let html=await app.request({url})
        console.log(html);
        let r, regex=/now="([^"]+)";var pn="[^"]+"; var next="([^"]*)/ //获取m3u8地址的正则表达式
		change={}
		if(r=regex.exec(html)){
			change[`sources[${sourceIndex}].list[${listIndex}].url`]=r[1] //当前视频的m3u8网址
			if(r[2])change[`sources[${sourceIndex}].list[${listIndex+1}].url`]=r[2] //下个视频的地址
			change.url=r[1] //video组件播放的视频
			this.setData(change) //更新页面数据
		}
    },
    sources(e){
        console.log(e);
        let sourceIndex=e.target.datset.index
        let oldIndex=this.data.sourceIndex
        if(oldIndex==sourcesIndex)return
        let change={sourceIndex}
        if(oldIndex!=null)change[`sources[${oldIndex}].selected`]=false
        change[`source[${sourceIndex}].selected`]=true
        this.setData(change)
    },
    async onLoad(e){
        console.log(e);
		let index=parseInt(e.index) //点击列表的索引号
		//数组中第一个元素为首页，最后一个元素为当前页面 [ main, films/index, films/player]
        let pages=getCurrentPages() //获取当前页面栈
        pp=pages[pages.length-2]
		//列表页面对象
		console.log(pp.data) //获取列表页面的数据
		let menu=pp.data.menus[pp.data.menuIndex] //当前菜单
		let type=menu.types[menu.typeIndex] //当前类型
		let video=type.list[index] //要播放的视频
		console.log(video) 
        let url=`${pp.host}${video.url}` //播放视频页面的网址
        
		let html=await app.request({url}) //获取播放页面的html文本
		console.log(html)
		let r, jj, regex=/video-info-content">(.+?)<\/div>/s //获取简介的正则表达式
		if(r=regex.exec(html)){
            jj='　　'+r[1].replace(/<\/?(br|p|div)[^>]*>|　+/g,'\n')
            .replace(/<[^>]*>/g,'')
            .replace(/&nbsp;/g,' ')
            .replace(/\s*\n\s*/g, '\n　　')
            .trim()
		}
		let sources=[] //存放数据源
		regex=/value="([^"]+)/g //查找数据源的正则表达式
		while(r=regex.exec(html)){
			sources.push({ //保存数据源对象
				name: r[1],
			})
        }
        regex=/sort-item">(.+?)<\/div>/gs //每个源都有多集的信息，信息间的定界符
        let ind=-1
        while(r=regex.exec(html)){
            let r2, re=/title="([^"]+)" href="([^"]+)/g, list=[]
            while(r2=re.exec(r[1])){
                list.push({
                    name: r2[1], //每一集的名称
                    url: r2[2], //每一集的地址
                })
            }
            sources[++ind].list=list
        }
		this.setData({
			title: video.title,
			jj,
			sources,
		})
	},
})